今天我們要用python來實作SVM,這邊要預測的是python的iris資料集,在【Day 03】MLP實作的時候有使用過,沒看過的讀者可以去看看喔!
首先,我們先載入sklearn中的iris資料集,把data和target分別設定成x和y,以備後續使用。完成過後的x和y會像是下圖的dataframe。
from sklearn import datasets
import pandas as pd
data = datasets.load_iris()
x = pd.DataFrame(data["data"], columns = data["feature_names"])
y = pd.DataFrame(data["target"], columns = ["target"])
下一步,我們利用sklearn中的train_test_split,將先前載入的資料集分成訓練集以及測試集,這邊筆者設定的訓練集以及測試集比例為7: 3,讀者可以試著調整看看。
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.3, random_state = 42)
接著就要來建構模型了,我們直接引入sklearn中的SVC(Support Vector Classification),在kernel的部分筆者這邊採用linear(線性),其他還有poly、rbf、sigmoid、precomputed等等可以做選擇。建構完之後就直接將訓練集的特徵(feature)以及標籤(label)給丟進模型做訓練(fit)。
from sklearn.svm import SVC
svm = SVC(kernel = "linear")
svm.fit(x_train, y_train)
最終完成過後,筆者這邊得出的結果是100%的正確率,但這是由於iris資料集的內容特徵明顯,所以才可以得出這麼好的結果。讀者可以自己試試看運用在別的資料集上喔!